package com.hymall.controller.admin;

import com.hymall.bean.MarketGoods;
import com.hymall.bean.MarketGoodsAttribute;
import com.hymall.bean.MarketGoodsProduct;
import com.hymall.bean.MarketGoodsSpecification;
import com.hymall.bean.bo.AddGoodBO;
import com.hymall.bean.bo.AdminSearchBO;
import com.hymall.bean.bo.AdminUPDataBO;
import com.hymall.bean.bo.WXOrderBO;
import com.hymall.bean.common.BasePageInfo;
import com.hymall.bean.common.BaseRespVo;
import com.hymall.bean.common.CommonData;
import com.hymall.bean.vo.CatAndBrandVO;
import com.hymall.bean.vo.GoodsDetailVO;
import com.hymall.bean.vo.Product2;
import com.hymall.service.admin.GoodsService;
import lombok.Data;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @Author: haiyuny
 * @Date: 2022/7/18 9:18
 * @Description:商品管理 -> 商品列表
 */
@RestController
@RequestMapping("admin/goods")
public class AdminGoodsController {
    @Autowired
    GoodsService goodsService;



    /**
     * 商品管理  ->  商品增加
     *
     * @param goods
     * @return
     */
    @PostMapping("create")
    public BaseRespVo create(@RequestBody AddGoodBO goods) {


        int l = goodsService.createGoods(goods);
        if (l == 1) {
            return BaseRespVo.ok(null);
        }
        if (l == -1) {
            return BaseRespVo.invalidParameter("参数格式有问题");
        }
        return BaseRespVo.invalidParameter("参数内容有问题");
    }

    /**
     * 商品管理  ->  商品list
     *
     * @param info
     * @return
     */
    @RequestMapping("list")
    public BaseRespVo list(BasePageInfo info, AdminSearchBO search) {
        CommonData data = goodsService.queryGoodsList(info, search);
        return BaseRespVo.ok(data);

    }

    /**
     * 商品管理  ->  商品细节 查看 etc
     *
     * @param id
     * @return
     */
    @RequestMapping("detail")
    public BaseRespVo detail(Integer id) {

        GoodsDetailVO data = goodsService.queryGoodsById(id);
        return BaseRespVo.ok(data);


    }

    /**
     * 商品管理  ->  商标 类目展示
     *
     * @param
     * @return
     */
    @RequestMapping("catAndBrand")
    public BaseRespVo catAndBrand() {
        CatAndBrandVO data = goodsService.queryCatAndBrand();
        return BaseRespVo.ok(data);
    }

    /**
     * 商品管理  ->  商品更新
     *
     * @param up
     * @return
     */
    @PostMapping("update")
    public BaseRespVo update(@RequestBody AdminUPDataBO up) {
        goodsService.updateGoods(up);
        return BaseRespVo.ok(null);
    }

    /**
     * 商品管理  ->  商品删除
     *
     * @param goods
     * @return
     */
    @RequiresPermissions(value = {"admin:comment:delete"})
    @PostMapping("delete")
    public BaseRespVo delete(@RequestBody MarketGoods goods) {
        goodsService.deleteGoods(goods);
        return BaseRespVo.ok(null);
    }
}
